home *** CD-ROM | disk | FTP | other *** search
/ Champak 43 / Vol 43.iso / games / phit.swf / scripts / __Packages / Distance.as < prev    next >
Encoding:
Text File  |  2007-07-13  |  12.5 KB  |  341 lines

  1. class Distance
  2. {
  3.    function Distance()
  4.    {
  5.    }
  6.    static function LineSegmentLineSegment(segment1, segment2)
  7.    {
  8.       return Math.sqrt(Distance.LineSegmentLineSegmentSquared(segment1,segment2));
  9.    }
  10.    static function LineSegmentLineSegmentSquared(segment1, segment2)
  11.    {
  12.       var _loc21_ = segment1.m_endpoint1;
  13.       var _loc19_ = segment1.m_endpoint2;
  14.       var _loc20_ = segment2.m_endpoint1;
  15.       var _loc18_ = segment2.m_endpoint2;
  16.       var _loc27_ = _loc21_.GetAdd(_loc19_).GetMultiplyScalar(0.5);
  17.       var _loc26_ = _loc20_.GetAdd(_loc18_).GetMultiplyScalar(0.5);
  18.       var _loc24_ = _loc19_.GetSubtract(_loc21_).GetNormal();
  19.       var _loc17_ = _loc18_.GetSubtract(_loc20_).GetNormal();
  20.       var _loc9_ = segment1._length * 0.5;
  21.       var _loc6_ = segment2._length * 0.5;
  22.       var _loc16_ = _loc27_.GetSubtract(_loc26_);
  23.       var _loc11_ = - _loc24_.DotProduct(_loc17_);
  24.       var _loc8_ = _loc16_.DotProduct(_loc24_);
  25.       var _loc10_ = - _loc16_.DotProduct(_loc17_);
  26.       var _loc5_ = _loc16_.MagnitudeSquared();
  27.       var _loc15_ = Math.abs(1 - _loc11_ * _loc11_);
  28.       var _loc2_ = undefined;
  29.       var _loc1_ = undefined;
  30.       var _loc4_ = undefined;
  31.       var _loc25_ = undefined;
  32.       var _loc13_ = undefined;
  33.       var _loc7_ = undefined;
  34.       var _loc3_ = undefined;
  35.       if(_loc15_ >= 0.00001)
  36.       {
  37.          _loc2_ = _loc11_ * _loc10_ - _loc8_;
  38.          _loc1_ = _loc11_ * _loc8_ - _loc10_;
  39.          _loc25_ = _loc9_ * _loc15_;
  40.          _loc13_ = _loc6_ * _loc15_;
  41.          if(_loc2_ >= - _loc25_)
  42.          {
  43.             if(_loc2_ <= _loc25_)
  44.             {
  45.                if(_loc1_ >= - _loc13_)
  46.                {
  47.                   if(_loc1_ <= _loc13_)
  48.                   {
  49.                      var _loc22_ = 1 / _loc15_;
  50.                      _loc2_ *= _loc22_;
  51.                      _loc1_ *= _loc22_;
  52.                      _loc4_ = _loc2_ * (_loc2_ + _loc11_ * _loc1_ + 2 * _loc8_) + _loc1_ * (_loc11_ * _loc2_ + _loc1_ + 2 * _loc10_) + _loc5_;
  53.                   }
  54.                   else
  55.                   {
  56.                      _loc1_ = _loc6_;
  57.                      _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
  58.                      if(_loc7_ < - _loc9_)
  59.                      {
  60.                         _loc2_ = - _loc9_;
  61.                         _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  62.                      }
  63.                      else if(_loc7_ <= _loc9_)
  64.                      {
  65.                         _loc2_ = _loc7_;
  66.                         _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  67.                      }
  68.                      else
  69.                      {
  70.                         _loc2_ = _loc9_;
  71.                         _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  72.                      }
  73.                   }
  74.                }
  75.                else
  76.                {
  77.                   _loc1_ = - _loc6_;
  78.                   _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
  79.                   if(_loc7_ < - _loc9_)
  80.                   {
  81.                      _loc2_ = - _loc9_;
  82.                      _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  83.                   }
  84.                   else if(_loc7_ <= _loc9_)
  85.                   {
  86.                      _loc2_ = _loc7_;
  87.                      _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  88.                   }
  89.                   else
  90.                   {
  91.                      _loc2_ = _loc9_;
  92.                      _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  93.                   }
  94.                }
  95.             }
  96.             else if(_loc1_ >= - _loc13_)
  97.             {
  98.                if(_loc1_ <= _loc13_)
  99.                {
  100.                   _loc2_ = _loc9_;
  101.                   _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
  102.                   if(_loc3_ < - _loc6_)
  103.                   {
  104.                      _loc1_ = - _loc6_;
  105.                      _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  106.                   }
  107.                   else if(_loc3_ <= _loc6_)
  108.                   {
  109.                      _loc1_ = _loc3_;
  110.                      _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  111.                   }
  112.                   else
  113.                   {
  114.                      _loc1_ = _loc6_;
  115.                      _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  116.                   }
  117.                }
  118.                else
  119.                {
  120.                   _loc1_ = _loc6_;
  121.                   _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
  122.                   if(_loc7_ < - _loc9_)
  123.                   {
  124.                      _loc2_ = - _loc9_;
  125.                      _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  126.                   }
  127.                   else if(_loc7_ <= _loc9_)
  128.                   {
  129.                      _loc2_ = _loc7_;
  130.                      _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  131.                   }
  132.                   else
  133.                   {
  134.                      _loc2_ = _loc9_;
  135.                      _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
  136.                      if(_loc3_ < - _loc6_)
  137.                      {
  138.                         _loc1_ = - _loc6_;
  139.                         _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  140.                      }
  141.                      else if(_loc3_ <= _loc6_)
  142.                      {
  143.                         _loc1_ = _loc3_;
  144.                         _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  145.                      }
  146.                      else
  147.                      {
  148.                         _loc1_ = _loc6_;
  149.                         _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  150.                      }
  151.                   }
  152.                }
  153.             }
  154.             else
  155.             {
  156.                _loc1_ = - _loc6_;
  157.                _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
  158.                if(_loc7_ < - _loc9_)
  159.                {
  160.                   _loc2_ = - _loc9_;
  161.                   _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  162.                }
  163.                else if(_loc7_ <= _loc9_)
  164.                {
  165.                   _loc2_ = _loc7_;
  166.                   _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  167.                }
  168.                else
  169.                {
  170.                   _loc2_ = _loc9_;
  171.                   _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
  172.                   if(_loc3_ > _loc6_)
  173.                   {
  174.                      _loc1_ = _loc6_;
  175.                      _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  176.                   }
  177.                   else if(_loc3_ >= - _loc6_)
  178.                   {
  179.                      _loc1_ = _loc3_;
  180.                      _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  181.                   }
  182.                   else
  183.                   {
  184.                      _loc1_ = - _loc6_;
  185.                      _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  186.                   }
  187.                }
  188.             }
  189.          }
  190.          else if(_loc1_ >= - _loc13_)
  191.          {
  192.             if(_loc1_ <= _loc13_)
  193.             {
  194.                _loc2_ = - _loc9_;
  195.                _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
  196.                if(_loc3_ < - _loc6_)
  197.                {
  198.                   _loc1_ = - _loc6_;
  199.                   _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  200.                }
  201.                else if(_loc3_ <= _loc6_)
  202.                {
  203.                   _loc1_ = _loc3_;
  204.                   _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  205.                }
  206.                else
  207.                {
  208.                   _loc1_ = _loc6_;
  209.                   _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  210.                }
  211.             }
  212.             else
  213.             {
  214.                _loc1_ = _loc6_;
  215.                _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
  216.                if(_loc7_ > _loc9_)
  217.                {
  218.                   _loc2_ = _loc9_;
  219.                   _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  220.                }
  221.                else if(_loc7_ >= - _loc9_)
  222.                {
  223.                   _loc2_ = _loc7_;
  224.                   _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  225.                }
  226.                else
  227.                {
  228.                   _loc2_ = - _loc9_;
  229.                   _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
  230.                   if(_loc3_ < - _loc6_)
  231.                   {
  232.                      _loc1_ = - _loc6_;
  233.                      _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  234.                   }
  235.                   else if(_loc3_ <= _loc6_)
  236.                   {
  237.                      _loc1_ = _loc3_;
  238.                      _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  239.                   }
  240.                   else
  241.                   {
  242.                      _loc1_ = _loc6_;
  243.                      _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  244.                   }
  245.                }
  246.             }
  247.          }
  248.          else
  249.          {
  250.             _loc1_ = - _loc6_;
  251.             _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
  252.             if(_loc7_ > _loc9_)
  253.             {
  254.                _loc2_ = _loc9_;
  255.                _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  256.             }
  257.             else if(_loc7_ >= - _loc9_)
  258.             {
  259.                _loc2_ = _loc7_;
  260.                _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
  261.             }
  262.             else
  263.             {
  264.                _loc2_ = - _loc9_;
  265.                _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
  266.                if(_loc3_ < - _loc6_)
  267.                {
  268.                   _loc1_ = - _loc6_;
  269.                   _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  270.                }
  271.                else if(_loc3_ <= _loc6_)
  272.                {
  273.                   _loc1_ = _loc3_;
  274.                   _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  275.                }
  276.                else
  277.                {
  278.                   _loc1_ = _loc6_;
  279.                   _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
  280.                }
  281.             }
  282.          }
  283.       }
  284.       else
  285.       {
  286.          var _loc14_ = _loc9_ + _loc6_;
  287.          var _loc23_ = _loc11_ <= 0 ? 1 : -1;
  288.          var _loc12_ = - _loc8_;
  289.          if(_loc12_ < - _loc14_)
  290.          {
  291.             _loc12_ = - _loc14_;
  292.          }
  293.          else if(_loc12_ > _loc14_)
  294.          {
  295.             _loc12_ = _loc14_;
  296.          }
  297.          _loc1_ = _loc23_ * _loc8_ * _loc6_ / _loc14_;
  298.          _loc2_ = _loc12_ + _loc23_ * _loc1_;
  299.          _loc4_ = _loc12_ * (_loc12_ + 2 * _loc8_) + _loc5_;
  300.       }
  301.       return Math.abs(_loc4_);
  302.    }
  303.    static function Vector2DLineSegment(vector, segment)
  304.    {
  305.       return Math.sqrt(Distance.Vector2DLineSegmentSquared(vector,segment));
  306.    }
  307.    static function Vector2DLineSegmentSquared(vector, segment)
  308.    {
  309.       var _loc7_ = segment.m_endpoint1;
  310.       var _loc8_ = segment.m_endpoint2;
  311.       var _loc2_ = _loc7_.GetAdd(_loc8_).GetMultiplyScalar(0.5);
  312.       var _loc3_ = _loc8_.GetSubtract(_loc7_).GetNormal();
  313.       var _loc1_ = segment._length * 0.5;
  314.       var _loc5_ = vector.GetSubtract(_loc2_);
  315.       var _loc4_ = _loc3_.DotProduct(_loc5_);
  316.       var _loc6_ = undefined;
  317.       if(- _loc1_ < _loc4_)
  318.       {
  319.          if(_loc4_ < _loc1_)
  320.          {
  321.             _loc6_ = _loc2_.GetAdd(_loc3_.GetMultiplyScalar(_loc4_));
  322.          }
  323.          else
  324.          {
  325.             _loc6_ = _loc2_.GetAdd(_loc3_.GetMultiplyScalar(_loc1_));
  326.          }
  327.       }
  328.       else
  329.       {
  330.          _loc6_ = _loc2_.GetSubtract(_loc3_.GetMultiplyScalar(_loc1_));
  331.       }
  332.       var _loc9_ = vector;
  333.       _loc5_ = _loc6_.GetSubtract(_loc9_);
  334.       return _loc5_.MagnitudeSquared();
  335.    }
  336.    static function CircleLineSegment(circle, segment)
  337.    {
  338.       return Math.sqrt(Distance.Vector2DLineSegmentSquared(circle._center,segment)) - circle._radius;
  339.    }
  340. }
  341.